<?php
/**
 * Created by PhpStorm.
 * User: River
 * Email: river0428@gmail.com
 * Date: 2018/6/8
 * Time: 下午5:07
 */


/**
 * API返回成功信息的封装
 *
 * @param $data
 *
 * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
 */
function success($data = null)
{
    return response()->json(['data' => $data, 'code' => 0, 'msg' => 'ok'],200,[],JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);
}

/**
 * API返回失败信息的封装
 *
 * @param int   $code
 * @param       $msg
 *
 * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response|\Symfony\Component\HttpFoundation\JsonResponse
 */
function fail($code = 400, $msg = 'fail')
{
    if (is_array($msg)) {
        $msg = implode("；", $msg);
    }
    return response()->json(['code' => $code, 'msg' => $msg],200,[],JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);
}

/**
 * 获取文件mimeType
 *
 * @param $file
 *
 * @return string
 */
function get_file_mime($file)
{
    $fi = new finfo(FILEINFO_MIME_TYPE);
    return $fi->file($file);
}

/**
 * 判断文件是不是图片
 *
 * @param $file
 *
 * @return bool
 */
function is_image($file)
{
    return true;
}

/**
 * 将路径的连接符转换为系统连接符
 *
 * @param $path
 *
 * @return mixed
 */
function relative_path($path)
{
    return str_replace(["/", "\\"], DIRECTORY_SEPARATOR, $path);
}

function module_path($path = '')
{
    return base_path(relative_path('modules/' . $path));
}

function convert_plus($str) {
    return str_replace(' ', '',str_replace('%2B', '+', $str));
}

function addQueryParam($url, $key, $value) {
    $url=preg_replace('/(.*)(?|&)'.$key.'=[^&]+?(&)(.*)/i','$1$2$4',$url.'&');
    $url=substr($url,0,-1);
    if(strpos($url,'?') === false){
        return ($url.'?'.$key.'='.$value);
    } else {
        return ($url.'&'.$key.'='.$value);
    }
}

function formatPrice($price)
{
    return money_format('%.2n', $price); //todo 详细格式化功能待完善
}

function convert_mobile($mobile) {
    return preg_replace('/(\d{3})\d{4}(\d{4})/', '$1****$2', $mobile);
}

//生成订单号
function orderSn(){
    //生成24位唯一订单号码，格式：YYYY-MMDD-HHII-SS-NNNN,NNNN-CC，其中：YYYY=年份，MM=月份，DD=日期，HH=24格式小时，II=分，SS=秒，NNNNNNNN=随机数，CC=检查码
    @date_default_timezone_set("PRC");
    //订购日期
    $order_date = date('Y-m-d');
    //订单号码主体（YYYYMMDDHHIISSNNNNNNNN）
    $order_id_main = date('YmdHis') . rand(10000000,99999999);
    //订单号码主体长度
    $order_id_len = strlen($order_id_main);
    $order_id_sum = 0;
    for($i=0; $i<$order_id_len; $i++){
        $order_id_sum += (int)(substr($order_id_main,$i,1));
    }
    //唯一订单号码（YYYYMMDDHHIISSNNNNNNNNCC）
    $order_sn = $order_id_main . str_pad((100 - $order_id_sum % 100) % 100,2,'0',STR_PAD_LEFT);
    return 'YHX'.$order_sn;
}

/**
 * 判断俩版本号大小
 *
 * @author yls
 * @param string $versionA
 * @param string $versionB
 * @return string gt 大于 lt 小于 eq 相等
 */
function compareAppVersion($versionA, $versionB)
{
    $a = explode('.', $versionA);
    $b = explode('.', $versionB);
    $one = (int) $a[0] - (int) $b[0];
    if ($one > 0) {
        return 'gt';
    } elseif ($one < 0) {
        return 'lt';
    }
    $two = (int) $a[1] - (int) $b[1];
    if ($two > 0) {
        return 'gt';
    } elseif ($two < 0) {
        return 'lt';
    }
    $a[2] = $a[2] ?? 0;
    $b[2] = $b[2] ?? 0;
    $three = (int) $a[2] - (int) $b[2];
    if ($three > 0) {
        return 'gt';
    } elseif ($three < 0) {
        return 'lt';
    }
    return 'eq';
}